---
title: Husky
description: ステージされた Git ファイルに対して Husky を使って Ultracite を自動的に実行する
---

Ultracite は、Git フック管理のための人気ツールである [Husky](https://typicode.github.io/husky/) とシームレスに統合できます。この統合により、コミット前にコードが適切にフォーマットされていることを保証するための pre-commit フックが自動的に設定されます。

## Husky とは何ですか？

Husky は、プロジェクトで Git フックを簡単に使えるようにするツールです。Git フックは、コミットやプッシュなど Git ワークフローの特定のタイミングで自動的に実行されるスクリプトです。Husky はこれらのフックの設定と管理プロセスを簡素化します。

## Ultracite は Husky をどのように使用するか

プロジェクトで Ultracite を初期化すると、コミットごとにコード整形を実行するように Husky を自動的に設定できます。これにより以下が保証されます:

- コミットされるすべてのコードが一貫したフォーマット基準に従う
- コード品質チェックが自動的に適用される
- チームメンバーが手動でコードを整形する必要がなくなる
- リポジトリのコードスタイルが綺麗で一貫した状態に保たれる

## pre-commit フックの動作

Ultracite の Husky 統合は、次のコマンドを実行する pre-commit フックを作成します:

```bash
npx ultracite fix
```

このコマンドは:
- Biome のリンターとフォーマッターをコードベースで実行する
- 可能な限りフォーマットの問題を自動修正する
- ステージされたすべてのファイルがプロジェクトのコード標準を満たしていることを保証する
- フォーマットの不整合を導入するようなコミットを防ぐ

## 自動セットアップ

初期化プロセス中（`ultracite init`）、Husky オプションを選択すると、Ultracite は次の処理を行います:

1. **Installs Husky**: プロジェクトに Husky を開発依存として追加します
2. **Creates Hook File**: フォーマットコマンドを含む `.husky/pre-commit` ファイルを設定します
3. **Handles Existing Setups**: すでに Husky が設定されている場合は、既存の pre-commit フックを上書きするのではなく更新します

## 統合の詳細

Husky 統合にはいくつかのスマートな機能が含まれます:

### 依存関係管理
- プロジェクトのパッケージマネージャを使用して Husky を開発依存に自動インストールします
- 適切なパッケージマネージャコマンドを使用します（`npm install -D`, `yarn add -D`, `pnpm add -D` など）

### フック管理
- **New Projects**: ultracite fix コマンドを記載した新しい `.husky/pre-commit` ファイルを作成します
- **Existing Projects**: 既存の pre-commit フックに Ultracite コマンドを追記し、既存のフックを保持します

### ファイル構成
統合は次のファイルを作成または変更します:
```
.husky/
└── pre-commit    # Contains the formatting command
```

## 利点

### 一貫したコードスタイル
すべてのコミットが自動的にプロジェクトのフォーマット基準に従うため、スタイルに関する議論や不整合を排除できます。

### 自動化された品質管理
フォーマットの問題がリポジトリに入る前に検出でき、クリーンなコミット履歴を維持できます。

### チームでの協力
チームメンバー全員が手動の介入なしに同じフォーマット基準に従うようになります。

### CI/CD の最適化
ローカルでコードが事前にフォーマットされるため、フォーマット関連の CI/CD パイプライン失敗を減らせます。

## ワークフローへの統合

Husky 統合を有効にすると、一般的な Git ワークフローは次のようになります:

1. **Make changes**: コードファイルを変更する
2. **Stage changes**: `git add` で変更をステージする
3. **Commit changes**: `git commit` で変更をコミットする
4. **Pre-commit hook runs**: pre-commit フックが自動的に実行され、ステージされたファイルをフォーマットする
5. **Commit proceeds**: 適切にフォーマットされたコードでコミットが進行する

フォーマッターが変更を加えた場合は、それらの変更を再度ステージしてコミットする必要があります。

## カスタマイズ

Ultracite は合理的なデフォルトを設定しますが、動作はカスタマイズできます:

- 追加のコマンドを加えるために `.husky/pre-commit` を修正する
- フォーマットルールを調整するために Biome の設定を変更する
- Ultracite のフォーマットに加えて他の pre-commit チェックを追加する

## トラブルシューティング

### フックが実行されない
pre-commit フックが実行されない場合:
- Husky がインストールされていることを確認する: `npm ls husky`
- `.husky/pre-commit` が存在し、実行可能であることを確認する
- リポジトリで Git フックが有効になっていることを確認する

### パーミッションの問題
Unix 系システムでは、フックファイルが実行可能であることを確認してください:
```bash
chmod +x .husky/pre-commit
```

### フックをバイパスする
pre-commit フックをスキップする必要がある稀なケースでは:
```bash
git commit --no-verify
```

これは自動フォーマットをバイパスするため、コードベースの一貫性を保つためにも乱用は避けてください。